home *** CD-ROM | disk | FTP | other *** search
/ Revolution - Das Atari CD Magazin 1997 / Revolution - Das Atari CD Magazin 1.iso / software / anwendng / utility / cbhd502 / src / m2 / scsistre.d < prev    next >
Text File  |  1997-01-21  |  7KB  |  167 lines

  1. DEFINITION MODULE ScsiStreamer;
  2. (****************************************************************************
  3.  *
  4.  *
  5.  * $Source: E:\HM2\LIB\se\rcs\scsistre.d,v $
  6.  *
  7.  * $Revision: 1.1 $
  8.  *
  9.  * $Author: S_Engel $
  10.  *
  11.  * $Date: 1996/02/03 19:32:12 $
  12.  *
  13.  * $State: Exp $
  14.  *
  15.  *****************************************************************************
  16.  * History:
  17.  *
  18.  * $Log: scsistre.d,v $
  19.  * Revision 1.1  1996/02/03  19:32:12  S_Engel
  20.  * Initial revision
  21.  *
  22.  *
  23.  *
  24.  ****************************************************************************)
  25.  
  26. FROM SYSTEM IMPORT ADR, ADDRESS;
  27.  
  28.  
  29. PROCEDURE Rewind(Imed : BOOLEAN; TimeoutSeconds : LONGCARD) : BOOLEAN;
  30.   (*
  31.    * RewindCmd spult das 'Band' bei sequentiellen SCSI-Geräten zurück.
  32.    * Ist Imed gleich FALSE, so wird gewartet bis das 'Band' zurück
  33.    * gespult worden ist. Ansonsten wird nicht gewartet. TimeoutSeconds
  34.    * ist die Auszeit in Sekunden (bei Imed=FALSE entsprechend hoch
  35.    * setzen).
  36.    *)
  37.  
  38. CONST SpaceBlock        = 0;
  39.       SpaceMark         = 1;
  40.       SpaceSerie        = 2;
  41.       SpaceEnd          = 3;
  42.       SpaceSetmarks     = 4;
  43.       SpaceSetmarkSerie = 5;
  44.  
  45. PROCEDURE Space(Code : SHORTCARD; Count : LONGINT;
  46.                    TimeoutSeconds : LONGCARD) : BOOLEAN;
  47.   (*
  48.    * SpaceCmd sucht/überspult Count Dinge - je nach Code - auf einem 
  49.    * sequentiellen Medium (Count<0 rückwärts).
  50.    * Code = SpaceBlock  Count Blöcke überspulen
  51.    *      = SpaceMark   Count Filemarks überspulen
  52.    *      = SpaceSerie  bis Serie von Count Filemarks spulen
  53.    *      = SpaceEnd    bis zum Ende des beschriebenen Bereichs
  54.    *)
  55.  
  56. PROCEDURE WriteFilemark(Imed : BOOLEAN; Number : SHORTCARD; TimeoutSeconds : LONGCARD) : BOOLEAN;
  57.   (*
  58.    * WriteFilemarkCmd schreibt Number Filemarks auf ein sequentielles
  59.    * Medium. Ist Imed gleich FALSE, so wird gewartet bis die Marken
  60.    * geschrieben sind.
  61.    *)
  62.  
  63.  
  64. PROCEDURE Load(Imed, Ret, Eot, Load : BOOLEAN;
  65.                TimeoutSeconds : LONGCARD) : BOOLEAN;
  66.   (*
  67.    * LoadUnloadCmd ist das StartStopCmd für sequentielle Medien. Die 
  68.    * Flags haben vollgende Bedeutung:
  69.    * Imed=TRUE  Ausführung nicht abwarten
  70.    * Ret =TRUE  sequentielles Medium wird einmal ganz vor- und
  71.    *            zurückgespult um z.B. bei Bändern Spannungen zu 
  72.    *            beseitigen (retension)
  73.    * Eot =TRUE  vor entladen Ende des Mediums anfahren (END OF tape)
  74.    * Laod=TRUE  Medium laden
  75.    *) 
  76.  
  77. PROCEDURE Read(TransferLen : SHORTCARD; ADR : ADDRESS; TimeoutSeconds : LONGCARD) : BOOLEAN;
  78. PROCEDURE ReadNum(VAR TransferLen : SHORTCARD; ADR:ADDRESS; TimeoutSeconds : LONGCARD) : BOOLEAN;
  79.   (*
  80.    * SeqReadCmd liest TransferLen Blöcke von einem sequentiellen Medium
  81.    * an die durch ADR angegebene Adresse in den Speicher.
  82.    *)
  83.  
  84.  
  85. PROCEDURE Write(TransferLen : SHORTCARD; ADR : ADDRESS; TimeoutSeconds : LONGCARD) : BOOLEAN;
  86. PROCEDURE WriteNum(VAR TransferLen : SHORTCARD; ADR : ADDRESS; TimeoutSeconds : LONGCARD) : BOOLEAN;
  87.   (*
  88.    * SeqWriteCmd schreibt TransferLen Blöcke aus dem Speicher, der bei
  89.    * ADR beginnt, auf ein sequentielles Medium.
  90.    *)
  91.  
  92. PROCEDURE Erase(TimeoutSeconds : LONGCARD) : BOOLEAN;
  93.   (*
  94.    * EraseCmd löscht das im SCSI-Gerät eingelegte sequentielle Medium.
  95.    *)
  96.  
  97.  
  98. PROCEDURE RequestBlockAdr(VAR BlockAdr:LONGCARD) : BOOLEAN;
  99.   (* 
  100.    * Aktuelle Blockadresse eines sequentiellen SCSI-Gerätes abfragen.
  101.    * Ein Kommando mit dem hier verwendeten Code $02 ist in der ANSI-Norm 
  102.    * nicht spezifiziert, sondern ist als vom Hersteller frei verwendbar
  103.    * ausgewiesen. Tandberg-Streamer kennen dieses Kommando.
  104.    *)
  105.  
  106. PROCEDURE SeekBlock(Imed : BOOLEAN;
  107.                     BlockAdr, TimeoutSeconds : LONGCARD) : BOOLEAN;
  108.   (*
  109.    * SeqSeekBlockCmd spult das 'Band' eines sequentiellen SCSI-Gerätes
  110.    * auf den Block mit der Nummer BlockAdr. Ist Imed gleich FALSE, so wird 
  111.    * gewartet bis das 'Band' positioniert ist. Ansonsten wird nicht 
  112.    * gewartet. TimeoutSeconds ist die Auszeit in Sekunden (bei Imed=FALSE 
  113.    * entsprechend hoch setzen). Ein Kommando mit dem hier verwendeten Code 
  114.    * $0C ist in der ANSI-Norm nicht spezifiziert, sondern ist als vom 
  115.    * Hersteller frei verwendbar ausgewiesen. Tandberg-Streamer kennen 
  116.    * dieses Kommando.
  117.    *)
  118.  
  119.  
  120. (*-------------------------------------------------------------------------*)
  121. (*-                                                                       -*)
  122. (*- Locate ist das Kommando zur Positionierung eines Streamers            -*)
  123. (*- auf einer vorgegebenen Blocknummer.                                   -*)
  124. (*- SCSI-Opcode $2B                                                       -*)
  125. (*- Quelle : SCSI-2 draft proposal                                        -*)
  126. (*-                                                                       -*)
  127. (*- BlockAdresstype                                                       -*)
  128. (*-   TRUE  : Block-Adresse als Device-Specific Value                     -*)
  129. (*-   FALSE : Adresse als logische Block-Adresse                          -*)
  130. (*- ChangePartition                                                       -*)
  131. (*-   TRUE  : Band-Partition wechseln, Partitionsnummer übergeben         -*)
  132. (*-   FALSE : Partition beibehalten                                       -*)
  133. (*-                                                                       -*)
  134. (*-------------------------------------------------------------------------*)
  135. PROCEDURE Locate(BlockAdresstype : BOOLEAN;
  136.                  ChangePartition : BOOLEAN;
  137.                  Imed            : BOOLEAN;
  138.                  BlockAdress     : LONGCARD;
  139.                  Partition       : SHORTCARD;
  140.                  TimeoutSeconds  : LONGCARD) : BOOLEAN;
  141.  
  142. (*-------------------------------------------------------------------------*)
  143. (*-                                                                       -*)
  144. (*- Read Position ist das Kommando zur Abfrage der aktuellen              -*)
  145. (*- Bandposition                                                          -*)
  146. (*- SCSI-Opcode $34                                                       -*)
  147. (*-                                                                       -*)
  148. (*- BlockAdresstype                                                       -*)
  149. (*-   TRUE  : Block-Adresse als Device-Specific Value                     -*)
  150. (*-   FALSE : Adresse als logische Block-Adresse                          -*)
  151. (*- Partition : Nummer der aktuellen Partition                            -*)
  152. (*- BlockAdress : Adresse des nächsten zu übertragenden Blockes           -*)
  153. (*-                                                                       -*)
  154. (*- die Werte für BOP, EOP, Last Block Location, Number of Blocks in      -*)
  155. (*- Buffer Number of Bytes per Buffer werden bei der Prozedurantwort      -*)
  156. (*- unterschlagen.                                                        -*)
  157. (*- Zur Auswertung dieser Parameter bitte ALIASCMD.I beachten.            -*)
  158. (*-                                                                       -*)
  159. (*-------------------------------------------------------------------------*)
  160. PROCEDURE ReadPosition(    BlockAdresstype : BOOLEAN;
  161.                        VAR Partition       : SHORTCARD;
  162.                        VAR BlockAdress     : LONGCARD) : BOOLEAN;
  163.  
  164.  
  165.  
  166. END ScsiStreamer.
  167.